Reading list for Sat, Jun.29, 2024

Total: 773 from which: 3 suggested today and 540 expired

Today's reading list ±

3 links selected from 233 today Sat, Jun.29, 2024
  1. How to listen to, and enjoy, classical music

    Whether you’re a newbie or an aficionado, these ways to navigate and approach the genre will enrich your experience ... (29300 chars. See body)


    Need to know

    The number of musical genres is bewilderingly vast and, thanks to digital technology, music of every sort is available to you with a few clicks or taps. So why, in this sea of sound, should you get to know more about classical music?

    Well, there is no form of music that you need to know. Listening to classical music is not a duty, though well-intentioned advocates have sometimes made it seem like one. But there are good reasons you might want to explore classical music. Classical music can be exciting, absorbing, emotionally moving, inspiring, challenging, thought-provoking and often simply astonishing. Why wouldn’t you seek out all that? And, if you found it, wouldn’t the want feel like a need?

    In this Guide, I invite you to discover all these qualities for yourself. The recommendations I’ll offer can help enrich your experience of classical music, whether you are a newcomer to the genre or a long-time listener.

    I fell in love with classical music a long time ago, as a teenager growing up in New York. One of my happiest memories of that time involves trips to the library to borrow vinyl records in the company of others doing the same, people of all ages, ethnicities and races, bound together by a shared desire for those enthralling sounds. The feeling of spontaneous community prevailed. Preferences passed from person to person in library whispers. It just felt good to be there.

    Today, as back then, classical music suffers from a public image of stuffiness, staidness and a general failure to rock. But, while the stiff decorum of classical concerts may have once deserved that reputation (I’m glad to say that they’ve lately been loosening up), the stiffness has nothing to do with the music, which deserves better. In my view, classical music is far more effective at breaking down limits on thought and feeling than it is at enforcing them. In the summer of 1989, the pro-democracy protesters in Tiananmen Square in Beijing set up makeshift loudspeakers to broadcast the choral finale, ‘Ode to Joy’, of Beethoven’s Ninth Symphony as government troops rolled in with weapons at the ready. The music resounded across the square and also on a bootleg radio network. People sang along. If that didn’t rock, I don’t know what could.

    A very brief roadmap

    ‘Classical music’ is a catchall term for music written down in musical notation since roughly the 14th century, originally in Europe but ultimately worldwide. Traditionally, the performance of this music closely follows the composer’s written score, though exactly what that means has varied over time. It is probably better to speak of ‘early music’ prior to about 1600, followed by ‘Baroque’ music through the mid-1700s, and ‘classical’ music from the 1770s on.

    Classical music features numerous types of compositions, each of which draws in different ways on a common stock of expressive resources. Here are brief sketches of some of the main types, to help you navigate:

    • A symphony is an extended work for an orchestra consisting of string instruments, woodwinds, brass and percussion. It typically has four segments, based on four different tempos: 1) fast; 2) slow; 3) moderate to lively; and 4) fast to very fast. These four segments, or ‘movements’, are associated, respectively, with drama; expressivity and sensibility; physicality; and conviviality.
    • A string quartet is an extended work for two violins, a viola and a cello. It is commonly organised into the same sequence of four movements found in symphonies.
    • A concerto is a multi-movement work for a soloist and an orchestra. Usually, the number of movements is three rather than four.
    • A sonata is a multi-movement work for a piano soloist, or for a soloist playing a different instrument and accompanied by piano.
    • An overture is a symphonic introduction to an opera, ballet or play. A tone poem is a shorter, free-standing work for orchestra. These tend to follow the dramatic pattern typical of symphonic first movements.
    • Preludes, études (studies) and character pieces are short compositions, typically for piano.

    There are countless ways to realise these types – and countless ways to modify them. As you become more familiar with the repertoire, hearing the creative transformations that composers bring to the types and the sequences of movements can eventually become second nature.

    Classical music brings together knowledge and pleasure

    Like most art, classical music activates a dialogue between pleasure and knowledge. The formula is an ancient one; the Roman poet Horace wrote that the task of poetry is to delight and instruct. The combination of something to learn with something to enjoy heightens the impact of both. Classical music has a special take on this process because, unlike art forms based on text or images, the music does not depict knowledge but embodies it. Instead of showing or telling us something, the music simulates a vital experience. The result can feel almost shockingly firsthand, as if it were happening to you.

    The feelings and ideas involved in classical music are typically left unidentified or are identified only in loose general terms. When the music has no lyrics, which is the norm for the classical types listed above, it can neither say nor show anything, but it turns this lack into a virtue. The music makes something understood by its means of giving pleasure. For the listener, this often means coming to feel what it is like to understand something important – even if one cannot always say just what that something is.

    In addition to breaking down constraints and embodying experience (and in part because it can do those things), classical music, like art forms from classical Greek drama to Italian Renaissance painting to classic Hollywood movies, occupies a significant place in Western history. Anyone interested in that history, or in the history of the arts, has further reason to listen to this music.

    One thing you will not find in this Guide is a checklist of musical forms and structures that you absolutely must listen for. Who would tell you that you can’t understand a pop song unless you hear this or that formal feature? The same principle should apply to classical music, but a bad idea that refuses to die is that understanding classical music requires formal training; that you have to earn your way to enjoyment. You don’t.

    What’s most distinctive about classical music is not how you listen, but what can be heard when you do. The music is multifaceted and richly detailed, which means that there are many ways to listen to it. It changes as your listening does; even the same work can be heard differently many times over. I don’t presume to say here how you should listen, only how you could listen. To that end, I will offer some advice for seeking music that you find compelling, as well as suggestions based on what I call ‘angles of hearing’ – informal orientations toward a piece of music that can help you listen with greater pleasure and understanding.

    What to do

    Find music that catches your interest

    Given its long history, the classical repertoire is unsurprisingly huge. In navigating it, one can’t go wrong with the big names. Beethoven and Mahler, Debussy and Stravinsky, Mozart and Chopin are all well known for a reason. But the repertoire is also filled with music by many other brilliant composers – including composers who, until recently, have been neglected because of their race, sex or both. Fortunately, this rich body of music is now being rediscovered.

    But where to start? Thanks to the internet, it is easy to access public radio stations that specialise in classical music, no matter where you live. A few that broadcast from my area, and that I’d highly recommend to readers in any part of the world, are the stations WMHT, WQXR and WSHU. Tune in at random to any of these and you’re sure to hear interesting and attractive things that can form the basis for further exploration. Similarly, music-streaming services commonly offer curated playlists that can serve as introductions to classical music or to particular composers. The New York Times runs a feature entitled ‘Five Minutes That Will Make You Love…’, highlighting various kinds of (mostly) classical music. Each entry includes audio clips along with short paragraphs by the contributors explaining why the music they’ve chosen moves and enlightens them.

    Once you’ve found music that moves you and captures your imagination, a simple online search of the composer and/or the type of composition (string quartet, symphony, etc) will bring up further performances and an abundance of other works of music to explore.

    Choose ‘angles of hearing’ to listen more deeply

    Just as an angle of vision shapes what you can see, an angle of hearing shapes what you can hear. Hearing in general becomes focused when we listen for something. You take up an angle of hearing by the simplest of means: by listening with something especially in mind. The ‘something’ can be a musical quality or detail, an idea, an image, an impression, or an evocative word or phrase. Some angles can be used for listening to many or most works; some are available only for one. Trying out different angles on the same music is one of the pleasures of classical music and also one of its means of discovery.

    Although most classical works have lacked titles until recently (they were commonly identified as numbered instances of a type, such as Symphony No 9 or Piano Concerto No 1), those works that do have titles use them to invite particular angles of hearing. When Antonio Vivaldi, circa 1723, named a series of four violin concertos The Four Seasons, in the sequence ‘Spring’, ‘Summer’, ‘Autumn’ and ‘Winter’, he provided an angle that still works 300 years later.

    If you listen to the four concertos with their titles in mind, the experience can feel like witnessing or discovering something about natural cycles and the passage of time. The slow second movement of ‘Summer’, for example, juxtaposes a mournful solo violin melody with violent rumblings from the full ensemble.

    The summer we hear is not a welcome season but a time of anxiety and discomfort. Vivaldi published The Four Seasons with a series of four descriptive sonnets. The lines accompanying this movement read:

    The fear of lightning and fierce thunder
    Robs [the shepherd’s] tired limbs of rest
    As gnats and flies buzz furiously around.

    What the music and the poetry convey, each in its own way, is a feeling and a knowledge of vulnerability, even of helplessness, before the nature on which human lives and livelihoods depend.

    Of course, there is not always a sonnet to rely on. As you listen to a piece of classical music, you may or may not be able to say exactly what the music is making known. The feeling of what it is like to understand something important may take precedence over the content of the understanding. Later reflection may enable you to say more, expanding both understanding and pleasure. (My comment about vulnerability to nature comes from that sort of reflection.) But, either way, the feeling of knowing, discovering or recalling something is there, and its medium is the pleasure the music gives.

    The features that give the music meaning, whatever meaning it assumes for you, are all on the surface. All you need to do is listen with your imagination, not just with your ears. Find an angle of hearing and listen for what happens. Everything follows from that.

    In the examples below, I will begin by suggesting a possible angle of hearing, and then model what one might hear when listening from that angle. But I do so fully expecting that listeners will find other angles from which to listen – and, likewise, will find individual ways of reflecting on the results. Experiment with different angles of hearing, and listen imaginatively, allowing for as many associations and images and memories as you like.

    • Angle: follow the melody and its transformation

    The essential elements of Western music are melody, harmony and rhythm, but their prominence varies from one type of music to another. Rhythm often takes pride of place in instrumental jazz, for example; melody, especially when it is improvised, arises in dialogue with the music’s rhythmic vitality. While classical music can give rhythm a similar role at any time, its primary driver is melody. More particularly it is the variation and transformation of melody, the formation, combination and breakdown of melody – melody as a principle of drama.

    To follow the melody, keep in mind its simplest form, which is usually its first, and then listen to what happens to this expressive premise.

    Let’s look at the example of Ludwig van Beethoven’s String Quartet No 9 (1808), which affirms the value of melody by first exploring what happens if you do without it. The quartet begins with a slow, strange introduction: a seemingly random series of chords that somehow intimates an underlying sense of direction. When the direction is found, melody bursts forth and flourishes throughout the first movement. But there is more to be heard on the subject.

    The second movement starts arrestingly, with a single, loud pizzicato (plucked) note from the cello.

    Then, a brooding melody rises and falls over seven more such notes, now played softly. And there it is, an angle of hearing, almost demanded by the music, a melody that is mysterious, hypnotic, a little ominous: where will this melody go? Where can it go? You can hear the question in the swelling and ebbing of the music and its low-lying sounds.

    The question is soon answered. A new sort of melody arises (at 2:48 in the recording above), and it is strikingly different from the first: light, graceful, delicate. It’s a return to the comforts of familiarity. The melody suddenly seems charmingly old-fashioned and elegant, which might strike you as a little suspicious since it seems to come from such a different world than the earlier melody. At this point, having attended to the stark change in melody, you might feel precariously poised between contrary forms of allure – one coming from something that’s hard to fathom, and one from something you don’t need to fathom. But the poise does not last. Later in the composition (at 5:16 in this version) the second melody returns, only to break into fragments. The music gets stuck. And then the melody returns again in a startling new form, fluid and ecstatic. It sheds its familiarity and becomes the first melody’s companion in strangeness.

    All you need to do is to notice the qualities that the music calls to your attention, and permit yourself to think freely about them. Does the second melody’s transfiguration seem to come from the influence of its mysterious partner? Might the melody, travelling so far from its original self, embody a spirit of repudiation, escape or self-renewal? The questions that might arise while listening, and the answers, will depend on the listener. And the questions may not even need an answer. The abundance of possibilities is part of the point, and you may – surely will – have different interpretations of the music upon different hearings.

    • Angle: seek meaning in the qualities of the sounds

    Just as painters mix colours on a palette, classical composers mix sounds so that the combination has expressive or dramatic meaning in its own right. The composer decides how the available sounds are to combine and when to let unmixed sounds stand out, and on what instrument(s). Timbre is the ‘tone-colour’ of a sound, which is distinct for each instrument and varies depending on how the instrument is played; texture is the quality of the sound arising from the way instruments are combined or isolated. Both are essential to classical composition. They also provide an angle of hearing. The most famous sounds in classical music history, the four notes that begin Beethoven’s Fifth Symphony (1808), owe part of their impact to their timbre and texture. They are played at top volume, without harmony, by all the strings plus an isolated pair of clarinets. Their sound is pure, stark and uncompromising.

    You can also hear the impact of timbre and texture in the eerie and disturbing slow movement of Gustav Mahler’s First Symphony (1888). It starts with a tune that most listeners, then and now, would find familiar, known best under its French title, ‘Frère Jacques’. But the tune has a wretched fate, and it has suffered it already. It is played on a whining muted solo double bass; it moves too slowly, as if the glum bass were weighing it down; and it’s in a minor key. Its only accompaniment is a heavy tread on the timpani (kettledrums). These features are impossible to miss and they supply – insist on – an angle of listening. The music sounds bizarre. It sounds funereal. It sounds fascinating.

    Adding to the disquiet is the simple fact that ‘Frère Jacques’ is a round. Most of those who know it will have learned it as children singing in groups. The words mostly mean nothing, but singing them immediately creates a feeling of social cohesion. Mahler conveys the need for that cohesion by embodying what the loss of it feels and sounds like. He breaks down the cohesion into a heap of lost connections. Everything we know about the tune – its innocence, its association with childhood, its collectivity – turns into a sinister opposite.

    Too much happens after this to cover briefly, but one thing to reflect on is the later outbreak of raucous, rustic music whose colour and melody may or may not evoke the Jewish style known as klezmer, and thus allude to Mahler’s Jewish lineage. Does this turn of events embody liberation, nostalgia or something else? Once again, the answer is up to the listener and/or the performers, who may or may not hear the music in the same way.

    • Angle: let the sounds conjure sights and sensations

    Traditional accounts of classical music often advise listeners to engage with the music purely as music and to avoid giving too much credence to so-called ‘extramusical’ associations with other kinds of experience. The caution even applies to music that explicitly invites such associations – so-called ‘programme music’ (of which there is quite a lot). According to this view, when Claude Debussy writes a piece for orchestra entitled ‘Nuages’ (‘Clouds’), the clouds are not supposed to matter. But why shouldn’t they? Listeners associate the sounds of classical music with other things – images, memories, moods, fantasies – all the time. The associations are nearly impossible to avoid.

    It can be enriching to bring your own associations to the music and listen for what happens when you do. Take two brief examples, starting with Debussy’s ‘Clouds’ (completed in 1899). Debussy was quite serious about the title. The music, he wrote, ‘renders the immutable aspect of the sky and the slow, solemn motion of the clouds, fading away in grey tones lightly tinged with white.’ What might a listener experience when listening to the music with this connection to nature in mind?

    Most of the piece consists of slowly undulating, falling or static chords, with little discernible melody. The English horn does have an expressive little scrap of melody that comes and goes with scarcely any variation. Eventually it dissolves away into static sounds layered over a continuous, soft roll on the timpani, Debussy’s grey tones tinged with light. Listeners who ‘translate’ the music’s hazy chords into the imaginary sight of solemnly rolling clouds will be well rewarded.

    If melody is the heart of classical music, you might welcome the returns of that tiny, plaintive English horn theme, just a phrase, really – the minimum of melody that a listener needs. But perhaps you can also welcome its disappearance into the musical haze. Perhaps there are times when you want to float free of the definiteness of melody, even if that leaves you, well, with your head in the clouds. The angle of hearing brings the question alive.

    A second example is the finale of Franz Joseph Haydn’s String Quartet, Op 74, No 3 (1793), known as ‘The Rider’ or ‘The Horseman’. The nickname did not come from Haydn; it represents an ‘unauthorised’ association brought to the music by listeners over many generations – one that has stuck for obvious reasons. The movement begins with a jagged, propulsive melody over a pounding, galloping accompaniment.

    You can feel this music jolt. It is not music for the casual rider, but for one with a mission or an urgent message, one who rides furiously on and on. A subsequent, contrasting episode seems to have the aim of calming whatever situation is at hand, but the urgency then returns with fragments of the ‘rider’ melody. It keeps returning even after it should have stopped, at the very end. If you are looking for a wild ride, this piece will provide it.

    It would be hard to listen to this music without experiencing mental images and sensations, and that is likely to happen whether a piece of classical music has an evocative title or not. As in these examples, you can deepen your experience by allowing and exploring whatever comes to mind for you.

    • Angle: listen for repetition with difference

    Another way to get absorbed in the music is to simply listen for an ‘event’ that it dramatises. Just listen for what happens; the feeling that something is happening is basic to classical music.

    A good way to do this is to listen for repetition with difference. We have already had one example in Beethoven’s transformation of an elegant melody into a mysterious version of itself in the slow movement of his String Quartet No 9. Another occurs at the close of Debussy’s ‘Clouds’, when the fragment of melody that has returned unchanged throughout splits into pieces and disappears, almost as if it had been an illusion.

    Sometimes, the repetition crosses over from one movement to another. Johannes Brahms’s Symphony No 3 (1883) begins with an almost swaggering proclamation on strings, trombones and drums.

    More than a half hour later – at almost the last moment of the fourth and final movement (36:06) – that opening melody returns. But this time, it is soft rather than loud, heard on murmuring strings against static winds, no trombones, no drums. Is this reappearance tranquil, chastened, content, defeated or something else? Each listener will decide individually, and each performance will make its own suggestion. But, in every case, the return asks us to reconsider everything we have heard up to that point. To understand where we have come, we must revisit everywhere we have been.

    Listen for differences between performances

    When you’re ready to revisit music that you have enjoyed, listen for the difference that performance makes. The ‘same’ music can sound astoundingly different in different renditions. The pianist Shelley Katz offers a literally resounding demonstration of this with his recordings of 10 very different performances of a short keyboard piece by Johann Sebastian Bach – played each time without changing a note.

    ‘Summerland’ for piano, one of the ‘Three Visions’ (1936) by the Black American composer William Grant Still, is a musical vision of paradise. As performed by Mark Boozer, the opening minute begins with tranquility, then eases into fluid ripples that add vitality without disturbing the calm:

    As performed more slowly and more freely by Henry Kramer (no relation), the beginning is less tranquil than it is reflectively searching. The rippling passage includes a strain of longing that is not evident in Boozer’s version:

    The differences thus established inflect everything that follows in each performance. The music is the same but the meanings are different. You can find such differences in performances of nearly any piece of classical music. The music is designed to reveal its full depth and power in the differences from one performance to another (which reflect different angles of hearing by the performers).

    Key points – How to listen to, and enjoy, classical music

    1. Listening to classical music opens a well of possible experiences. The music can be absorbing, exciting and challenging, helping to break down limits on thought and feeling.
    2. Classical music brings together knowledge and pleasure. One of the rewards of listening is to feel what it is like to understand something important, without the use of text or visuals.
    3. Find music that catches your interest. You can’t go wrong with big-name composers like Beethoven or Mozart, but classical radio and playlists can help you find various other jumping-off points.
    4. Choose ‘angles of hearing’ to listen more deeply. Your listening experience can become richer and more focused when you listen for something – whether that’s a musical quality (such as the evolution of the melody, or the overall texture), an idea, an image or anything else. Listen with your imagination.
    5. Listen for differences between performances. A single piece of classical music can give very different impressions depending on how it is played by musicians. Try out different versions of your favourites to appreciate the fullness of the work.

    Learn more

    Watching a live classical performance

    One of the most rewarding ways to learn more about classical music is to attend some live classical concerts. These come in three main varieties:

    • orchestra concerts, usually featuring a symphony, a concerto and a shorter work;
    • concerts for string quartets or other small-ensemble compositions, which are called ‘chamber music’ because, historically, the pieces were performed in the rooms of houses rather than in public auditoriums; or
    • concerts for a solo pianist, called ‘recitals’ because the person who invented the format, the composer and virtuoso Franz Liszt, conceived of the soloist as ‘speaking’ to the audience.

    Many classical concerts supply their audiences with printed programmes that identify the works to be heard and provide some information – ‘programme notes’ – about the music, the composers and the performers. In many cases, today’s performers will also speak to the audience, breaking a longstanding tradition of proceeding in silence. Programme notes can be quite informative, especially when they avoid unhelpful descriptions of form and technique that amount to overly specific instructions on what to listen for. The notes I find most useful connect the works at hand to the composers’ life and times, and offer brief, evocative characterisations of the music that listeners can take as hints rather than directions. (The notes from a Pacific Symphony programme tracing the legacy of the pianist and composer Clara Schumann offer a positive example.)

    Classical concerts are inherently exciting. Most of them feature music in which there is little or no room for error, music that must be produced without amplification and that is hard to play – though not hard to listen to. These concerts dance on a tightrope.

    One way to tap into the energy and suspense that result is to watch as the music is being made. Chamber performers communicate to each other with their bodies as well as through the sounds they make; you can see as well as hear them pull together or apart. Soloists, too, use their bodies expressively: the ways a pianist leans over the keyboard, sways or keeps still, emphasises or restrains arm movement, all have a contribution to make to the way the music sounds. And orchestra leaders (‘conductors’) – whose job it is to coordinate the performers, balance their sound, shape the music’s pace (‘tempo’), and choose what to emphasise – vary from those who barely move to those who throw their whole bodies flamboyantly into the work. Live classical music has an element of spectacle that is an important part of its artistry.

    Links & books

    My book Why Classical Music Still Matters (2007) and my subsequent book Interpreting Music (2010) explore the themes of this Guide in more detail.

    The brief book Music: A Very Short Introduction (2nd ed, 2021) by Nicholas Cook covers classical music in an accessible way and explores its relationships to other kinds of music.

    For general histories of both early and classical music, look into the six-volume Western Music in Context (2012-14), a book series edited by Walter Frisch.

    The documentary film Following the Ninth (2013) directed by Kerry Candaele examines the global legacy of Beethoven’s Ninth Symphony, including its appearance in the Tiananmen Square protests and other contexts in which it has served as what the filmmakers call an ‘anthem of liberation and hope’.

    Another of the most beloved works of classical music, Johann Sebastian Bach’s Goldberg Variations for keyboard, is the subject of the podcast 30 Bach.

    The book The Sight of Sound (1993) by Richard Leppert explores, with extensive illustrations, the visual dimension of classical music from the 17th through the 19th centuries.

    The book Conventional Wisdom: The Content of Musical Form (2000) by Susan McClary shows how musical forms are platforms for negotiating social conditions and identities.

    The online book Challenging Performance (2020) by Daniel Leech-Wilkinson questions virtually every conventional idea about classical music and its performance. No one will agree with everything in it (I certainly don’t) but it is thought-provoking throughout and admirable in its advocacy of creative freedom.


  2. Where I live

    Despite all indications to the contrary, I live my life believing that my current state is a steady state of being and shall remain so indefinitely. None of my life experience backs up the fact that my state shall not ch ... (9367 chars. See body)


    Despite all indications to the contrary, I live my life believing that my current state is a steady state of being and shall remain so indefinitely. None of my life experience backs up the fact that my state shall not change in the future, yet that’s my default assumption. This misplaced faith in an unchanging future manifests itself in many ways in my life. When coupled with the human ability to get used to pretty much anything (strange smells, uncomfortable clothes, slowly changing weather patterns), it turns out that I’m not overly picky about my living situation. I used to think I was, but others recognized early on that I was just fooling myself.

    For instance, in college, one of my friends told me I could live in a closet with two wet dogs and be fine. And while I am allergic to dogs, I don’t think that would work out, but the sentiment behind the statement remains.

    When I was a kid, obviously, I lived where my parents lived. That meant a second-floor apartment (which was really the third floor, but there weren’t any apartments on the first floor since the building was basically built into a hillside) of a four-story brick apartment building on McLean Avenue in Yonkers, NY.

    I have it on good authority that there’s a world outside of Yonkers (Barnaby knows what I’m talking about), but my world was very Yonkers-centric for many years. That apartment was pretty nice, all things considered, and was pretty big for a family of four.

    My brother and I had our own bedrooms, and my parents converted what was supposed to be the living room (I think) into their bedroom and made the dining room (which was attached to the kitchen through a little hallway/butler’s pantry) into the living room. They did this by placing a rather large china cabinet in the archway between the two rooms.

    This furniture divider worked well, except for weekends. My father would sometimes work nights, and when he did, we couldn’t watch TV lest we wake him up. Now, you’re thinking, “Why not watch TV in another room that wasn’t attached to your parents’ bedroom?”

    Because we weren’t the Rockefellers, people, we had one TV in the apartment and it was in the living room. I couldn’t watch G.I. Joe on an iPad in my room, so I just… stayed in my room.

    Slowly, my other family members left the apartment, but I remained. My parents divorced, and off went dad (then he died, and I got that surprising letter at that very apartment!), I went off to college and then moved back, my brother moved out, and then my mom moved down to Virginia (much later, she moved to Pennsylvania and died, though I don’t think the Keystone State can be implicated in her death. But I have my eye on you, PA!).

    I got a job in Manhattan, and it seemed silly to move somewhere else. I had a big apartment to myself, and since the lease was unbroken for over 20 years, I was paying something like $600 a month, which my landlord hated.

    It was an interesting experience to be an adult in my childhood home and watch the rest of my childhood leave. I didn’t change much about the apartment since it had been the way it had been for my entire life. My mom’s room (attached to the living room, you’ll recall) was empty most of the time I lived there alone. I could have done any number of things with that apartment, yet I just hung out in the remnants of my childhood for a while (that all sounds more dramatic than it was). Oh, and by this time, I did have a TV in my bedroom, so I just lived in that one room, though I didn’t watch much G.I. Joe, as you might think.

    Eventually, I moved to PA and had my first opportunity (outside of college, which doesn’t count) to pick where I wanted to live for the very first time. I chose poorly in that I was something like 120 pounds heavier than I am now and opted for a 4th-floor walkup in a building with a tiny spiral staircase. Oh, and I figured my brother and I could do all the moving ourselves. We did, though my brother did a lot more than me.

    That apartment was OK, but I really liked the street I was on (Pine Street is still one of my favorite streets in Philadelphia). When it came time to renew my lease, I decided that maybe I should live in an apartment with a kitchen I could fit in (my first apartment in Philadelphia had a tiny little closet for a kitchen with the oldest gas stove I had ever seen. I maybe used it three times, mostly because I feared for my life whenever I turned it on).

    I then moved into the second place, which I was entirely responsible for picking. It was two blocks up from my first apartment on the same street (I really do like Pine Street).

    This time, I opted for a ground-floor apartment, AND I paid movers to move all my stuff (it didn’t cost a lot, but it was worth every penny, and it only took them 40 minutes to move all my stuff!).

    This apartment was bigger, but it was on the ground floor and in the rear of the building, which gave it a certain cave-like quality. It did, however, have a kitchen I could fit in with a stove that I didn’t suspect would kill me (and it didn’t! It never even tried). I can easily imagine myself staying in that apartment for many years or perhaps moving to a higher floor in the same building (I dug the building. It has a lot of character, though I never actually went upstairs at any point living there).

    This brings me to my current living situation (and the place I’ve lived the second longest in my life, which isn’t something I thought about until I wrote this sentence!).

    Marisa and I started going out after many years of friendship, and shortly thereafter, my lease was up. I thought about renewing, but I was spending most of my time at Marisa’s apartment, and her roommate had moved out a little bit ago. She figured it would make sense for me to get rid of most of my stuff and move into her apartment.

    Did I mention that her apartment was her grandparents’ apartment? It was full of all the furnishings one needs in an apartment, much from Marisa’s childhood. Most of my stuff was surplus to requirements.

    Several Craigslist ads and many fewer possessions later, we packed up Marisa’s car with my belongings, and I moved into a little piece of Marisa’s family history! And I’m now typing this with my children sleeping in their great-grandfather’s den.

    Many things remain of Marisa’s grandparents, though we have made some changes. Obviously, I’ve upgraded lots of technology over the years, and we’ve sprinkled some of our own furniture throughout. Plus, there’s basically a toy store in the living room now, which I don’t think was the case when Marisa was a kid here. It is fun to have this physical link to Marisa’s family history, though, since she has always had a powerful affinity for her family lore (my family’s history is lost in the mists of Ireland).

    I really like living in a building where someone else signs for my packages, and if something breaks, someone from the building will eventually fix it (after a couple of reminders). I also enjoy that I don’t need to go outside to throw away my trash or to go to the dentist (my dentist’s office is in the lobby of our building).

    We have expanded the apartment’s footprint by purchasing the studio next door. I say “expanded,” but restored is a better word. When Marisa’s grandparents bought the apartment (before our building was built), they purchased a 3-bedroom unit. Then Marisa’s grandfather died, so Marisa’s grandmother sold the studio unit back to the building for a small amount of money that I don’t like to consider when I think about how much we paid for basically another room and bathroom (well worth it, though!).

    As an apartment dweller for most of my life, our current situation suits me quite well. There are some things, having gone through a pandemic (which is still ongoing, but that’s a topic for a different day) that have put into question my prescriptive about a steady state future for my accommodations. It would be nice not to have to use an elevator and then walk through a lobby and two sets of doors to get outdoors (and then walk for a bit if you want to see some nature!). And while our building makes a lot of things easy, there’s no way around the fact that living in the middle of a city just adds a level of difficulty to life when you’re toting around twin boys.

    On the plus side, the building residents (who mostly bought apartments when Marisa’s grandparents did… so they are old, is what I’m saying) have taken a big interest in the boys. I’ve lived in this building for well over a decade and have only started speaking to some people since the boys were born (and many of those conversations started with, “When did you move into the building?!” It was fun to respond, “10 years ago” because that’s just the kind of person I am).

    It is funny how many things in life we fool ourselves into thinking are permanent, including our own lives. Luckily, the changes in my living arrangements have all led to progressively better situations. Given this trajectory, I imagine in 60 – 80 years, I’ll be living in a remote compound with expansive grounds and a staff catering to my every need, and that’s the kind of change I can get behind.

    This essay is part of my “Year of Essays.” You can suggest a topic using this form, and it may end up becoming a mediocre essay like this one!


  3. Concurrency Freaks: 50 years later, is Two-Phase Locking the best we can do?

    Two phase locking (2PL) was the first of the general-purpose Concurrency Controls to be invented which provided Serializability. In fact, 2PL gives more than Serializability, it gives Opacity, a much stronger isolation l ... (12997 chars. See body)


    Two phase locking (2PL) was the first of the general-purpose Concurrency Controls to be invented which provided Serializability. In fact, 2PL gives more than Serializability, it gives Opacity, a much stronger isolation level.
    2PL was published in 1976, which incidentally is the year I was born, and it is likely that Jim Gray and his buddies had this idea long before it was published, which means 2PL first came to existence nearly 50 years ago.
    Jim Gray Endowed Scholarship | Paul G. Allen School of Computer Science &  Engineering

    After all that time has passed, is this the best we can do?

     Turns out no, we can do better with 2PLSF, but let's start from the begining

    When I use the term "general-purpose concurrency control" I mean an algorithm which allows access multiple objects (or records or tuples, whatever you want to name them) with an all-or-nothing semantics. In other words, an algorithm that lets you do transactions over multiple data items.
    Two-Phase Locking has several advantages over the other concurrency controls that have since been invented, but in my view there are two important ones: simplicity and a strong isolation level.

    In 2PL, before accessing a record for read or write access, we must first take the lock that protects this record.
    During the transaction, we keep acquiring locks for each access, and only at the end of the transaction, when we know that no further accesses will be made, can we release all the locks. Having an instant in time (i.e. the end of the transaction) where all the locks are taken on the data that we accessed, means that there is a linearization point for our operation (transaction), which means we have a consistent view of the different records and can write to other records all in a consistent way. It doesn't get much simpler than this.
    Today, this idea may sound embarrassingly obvious, but 50 years ago many database researchers thought that it was ok to release the locks after completing the access to the record. And yes, it is possible to do so, but such a concurrency control is not serializable.

    As for strong isolation, database researchers continue to invent concurrency controls that are not serializable, and write papers about it, which means Serializability is not that important for Databases. On the other hand, all transactional commercial databases that I know of, use 2PL or some combination of it with T/O or MVCC.

    Moreover, in the field of concurrency data structures, linearizability is the gold standard, which means 2PL is used heavily. If we need to write to multiple nodes of a data structure in a consistent way, we typically need something like 2PL, at least for the write accesses. The exception to this are lock-free data-structures, but hey, that's why (correct) lock-free is hard!

    Ok, 2PL is easy to use and has strong isolation, so this means we're ready to go and don't need anything better than 2PL, right?
    I'm afraid not. 2PL has a couple of big disadvantages: poor read-scalability and live-lock progress.

    The classic 2PL was designed for mutual exclusion locks, which means that when two threads are performing a read-access on the same record, they will conflict and one of them (or both) will abort and restart.
    This problem can be solved by replacing the mutual exclusion locks with reader-writer locks, but it's not as simple as this.
    Mutual exclusion locks can be implemented with a single bit, representing the state of locked or unlocked.
    Reader-writer locks also need this bit and in addition, need to have a counter of the number of readers currently holding the lock in read mode. This counter needs enough bits to represent the number of readers. For example, 7 bits means you can have a maximum of 128 threads in the system, in case they all decide to acquire the read-lock on a particular reader-writer lock instance.
    For such a scenario this implies that each lock would take 1 byte, which may not sound like much, but if you have billions of records in your DB then you will need billions of bytes for those locks. Still reasonable, but now we get into the problem of contention on the counter.

    Certain workloads have lots of read accesses on the same data, they are read-non-disjoint. An example of this is the root node of a binary search tree, where all operations need to read the root before they start descending the nodes of the tree.
    When using 2PL, each of these accesses on the root node implies a lock acquisition and even if we're using read-writer locks, it implies heavy contention on the lock that protects the root node.

    Previous approaches have taken a stab at this problem, for example TLRW by Dave Dice and Nir Shavit in SPAA 2010.
    By using reader-writer locks they were able to have much better performance than using mutual exclusion locks, but still far from what the optimistic concurrency controls can achieve.
    Take the example of the plot below where we have an implementation similar to TLRW with each read-access contending on a single variable of the reader-writer lock, applied to a binary search tree, a Rank-based Relaxed AVL. Scalability is flat regardless of whether we're doing mostly write-transactions (left side plot) or just read-transactions (right side plot).

    Turns out it is possible to overcome this "read-indicator contention" problem through the usage of scalable read-indicators. Our favorite algorithm is a reader-writer lock where each reader announces its arrival/departure on a separate cache line, thus having no contention for read-lock acquisition. The downside is that the thread taking the write-lock must scan through all those cache lines to be able to ascertain whether if the write-lock is granted, thus incurring a higher cost for the write-lock acquisition.
    As far as I know, the first reader-writer lock algorithms with this technique were shown in the paper "NUMA Aware reader-writer locks" of which Dave Dice and Nir Shavit are two of the authors, along with Irina Calciu, Yossi Lev, Victor Luchangco, and Virenda Marathe
    This paper shows three different reader-writer lock algorithms, two with high scalability, but neither is starvation-free.

    So what we did was take some of these ideas to make a better reader-writer lock, which also scales well for read-lock acquisition but has other properties, and we used this to implement our own concurrency control which we called Two-Phase Locking Starvation-Free (2PLSF).
    The reader-writer locks in 2PLSF have one bit per thread reserved for the read-lock but they are located in their own cache line, along with the bits (read-indicators) of the next adjacent locks.


    Like on the "NUMA-Aware reader-writer locks" paper, the cost shifts to the write-lock acquisition which needs to scan multiple cache lines to acquire the write-lock. There is no magic here, just trade-offs, but this turns out to be a pretty good trade-off as most workloads tend to be on the read-heavy side. Even write-intensive workloads spend a good amount of time executing read-accesses, for example, during the record lookup phase.
    With our improved reader-writer lock the same benchmark shown previously for the binary search tree looks very different:

    With this improved reader-writer lock we are able to scale 2PL even on read-non-disjoint workloads, but it still leaves out the other major disadvantage, 2PL is prone to live-lock.

    There are several variants of the original 2PL, some of these variants aren't even serializable, therefore I wouldn't call them 2PL anymore and won't bother going into that.
    For the classical 2PL, there are three variants and they are mostly about how to deal with contention. They're usually named:
        - No-Wait
        - Wait-Or-Die
        - Deadlock-detection

    When a conflict is encountered, the No-Wait variant aborts the self transaction (or the other transaction) and retries again. This retry can be immediate, or it can be later, based on an exponential backoff scheme. The No-Wait approach has live-lock progress because two transactions with one attempting to modify record A and then record B, while the other is attempting to modify record B and then record A, may indefinitely conflict with each other and abort-restart without any of them ever being able to commit.

    The Deadlock-Detection variant keeps an internal list of threads waiting on a lock and detects cycles (deadlocks).
    This is problematic for reader-writer locks because it would require each reader to have its own list, which itself needs a (mutual exclusion) lock to protect it. And detecting the cycles would mean scanning all the readers' lists when the lock is taken in read-lock mode.
    Theoretically it should be possible to make this scheme starvation-free, but it would require using starvation-free locks, and as there is no (published) highly scalable reader-writer lock with starvation-free progress, it kind of defeats the purpose. Moreover, having one list per reader may have consequences on high memory usage. Who knows, maybe one day someone will try this approach.

    The Wait-Or-Die variant imposes an order on all transactions, typically with a timestamp of when the transaction started and, when a lock conflict arises, decides to wait for the lock or to abort, by comparing the timestamp of the transaction with the timestamp of the lock owner. This works fine for mutual exclusion locks as the owner can be stored in the lock itself using a unique-thread identifier, but if we want to do it for reader-writer locks then a thread-id would be needed per reader.
    If we want to support 256 threads then this means we need 8 bits x 256 = 256 bytes per reader-writer lock. Using 256 bytes per lock is a hard pill to swallow!

    But memory usage is not the real obstacle here. The Wait-Or-Die approach implies that all transactions have a unique transaction id so as to order them, for example, they can take a number from an atomic variable using a fetch_and_add() instruction.
    The problem with this is that on most modern CPUs you won't be able to do more than 40 million fetch_and_add() operations per second on a contended atomic variable. This may seem like a lot (Visa does about 660 million transactions per day, so doing 40 million per second sounds pretty good), but when it comes to in-memory DBMS it's not that much, and particularly for concurrent data structures is a bit on the low side.
    Even worse, this atomic fetch_and_add() must be done for all transactions, whether they are write-transactions or read-transactions.
    For example, in one of our machines it's not really possible to go above 20 M fetch_and_add() per second, which means that scalability suckz:

    To put this in perspective, one of my favorite concurrency controls is TL2 which was invented by (surprise!) none other than Dave Dice, Nir Shavit and Ori Shalev
    I hope by now you know who are the experts in this stuff  ;)

    Anyways, in TL2 the read-transactions don't need to do an atomic fetch_and_add(), and they execute optimistic reads, which is faster than any read-lock acquisition you can think of. At least for read-transactions, TL2 can scale to hundreds of millions of transactions per second. By comparison, 2PL with Wait-Or-Die will never be able to go above 40 M tps/sec.
    This means if high scalability is your goal, then you would be better off with TL2 than 2PL… except, 2PLSF solves this problem too.

    In 2PLSF only the transactions that go into conflict need to be ordered, i.e. only these need to do a fetch_and_add() on a central atomic variable. This has two benefits: it means there is less contention on the central atomic variable that assigns the unique transaction id, and it means that transactions without conflicts are not bounded by the 40 M tps plateau.
    This means that we can have 200 M tps running without conflict and then 40 M tps that are having conflict, because the conflicting transactions are the only ones that need to do the fetch_and_add() and therefore, and the only ones bounded by the maximum number of fetch_and_adds() the CPU can execute per second.
    On top of this, the 2PLSF algorithm provides starvation-freedom.

    Summary

    In this post we saw some of the advantages and disadvantages of 2PL and some of the variants of 2PL.
    We explained what it takes to scale 2PL: make a better reader-writer lock.
    But the big disadvantage of 2PL is the live-lock progress, which some variants could seemingly resolve, but in practice they don't because they will not scale, even with a better reader-writer lock.
    Then we described 2PLSF, a novel algorithm invented by me, Andreia and Pascal Felber to address these issues.

    In summary, 2PLSF is what 2PL should have been from the start, a concurrency control that scales well even when reads are non-disjoint and that provides starvation-free transactions, the highest form of blocking progress there is.
    Moreover, it's pretty good a solving certain kinds of conflicts, which means it can have scalability even some conflicts arise. 2PLSF is not perfect, but it's good enough, certainly better than TL2 when it comes to solving conflicts.

    Despite being two-phase locking, it's as close to 2PL as a jackhammer is to a pickaxe. 

    2PLSF is not your grandfather's 2PL



Random expired ±

2 links selected from 540 expired links

Expired ±

540 links expired today Sat, Jun.29, 2024
  1. You and your mind garden

    In French, “cultiver son jardin intérieur” means to tend to your internal garden—to take care of your mind. The garden metaphor is particularly apt: taking care of your mind involves cultivating your curiosity (the seeds (Open link)

  2. How can I permanently add my SSH private key to Keychain so it is automatically available to ssh? - Ask Different

    Log in Sign up Ask Different is a question and answer site for power users of Apple hardware and software. It only takes a minute to sign up. Sign up to join this community Anybody can ask a question Anybody can answe (Open link)

  3. Gonzo journalism

    The "Gonzo fist", characterized by two thumbs and four fingers holding a peyote button, was originally used in Hunter S. Thompson's 1970 campaign for sheriff of Pitkin County, Colorado. It has since evolved into a symbol (Open link)

  4. Beyond Microservices: Streams, State and Scalability

    Gwen Shapira talks about how microservices evolved in the last few years, based on experience gained while working with companies using Apache Kafka to update their application architecture. (Open link)

  5. The Grug Brained Developer

    Introduction this collection of thoughts on software development gathered by grug brain developer grug brain developer not so smart, but grug brain developer program many long year and learn some things although mostly s (Open link)

  6. Tripsy 2.15 Adds Weather Forecasts, Time Zone Support, and Other Customization Options - MacStories

    Tripsy is more than just an app for storing details about your upcoming trips. It does that and does it well, but it’s also a great way to revisit old trips and get inspired about places you want to visit in the future. (Open link)

  7. The Kaizen Way

    Are you looking for a new approach to health? Do you want to finally get the results you have been hoping for? How do you find a practitioner that is willing to try a different approach and guide you through your journey (Open link)

  8. The Four Innovation Phases of Netflix’s Trillions Scale Real-time Data Infrastructure | by Zhenzhong Xu | Feb, 2022 | Medium

    The blog post will share the four phases of Real-time Data Infrastructure’s iterative journey in Netflix (2015-2021). For each phase, we will go over the evolving business motivations, the team’s unique challenges, the (Open link)

  9. here

    Sample code and instructions for steps through different container image build options. - GitHub - maeddes/options-galore-container-build: Sample code and instructions for steps through different container image build op (Open link)

  10. The Book

    This is the story of Simon Wardley. Follow his journey from bumbling and confused CEO lost in the headlights of change to someone with a vague idea of what they're doing. (Open link)

  11. 7 days ago

    This article has a large gap in the story: it ignores sensor data sources, which are both the highest velocity and highest volume data models by multiple orders of magnitude. They have become ubiquitous in diverse, mediu (Open link)

  12. Manhattan Phoenix review: epic history of how New York was forged by fire – and water | Books | The Guardian

    Daniel Levy pins the great fire of 1835 as the birth event of modern Manhattan in a tale as teeming as the city itself (Open link)

  13. Diátaxis

    The Diátaxis framework solves the problem of structure in technical documentation, making it easier to create, maintain and use. (Open link)

  14. Optimizing Distributed Joins: The Case of Google Cloud Spanner and DataStax Astra DB | by DataStax | Building Real-World, Real-Time AI | Medium

    In this post, learn how relational and NoSQL databases, Google Cloud Spanner and DataStax Astra DB, optimize distributed joins for real-time applications. Distributed joins are commonly considered to… (Open link)

  15. Owen Pomery

    OWEN D. POMERY WORK SHOP ABOUT + CONTACT EDITORIAL RELIEFS EDITION AIRBNB FLAT EYE ERNEST POHA HOUSE CONCEPT SENET VICTORY POINT KIOSK SCI-FI SPOT ILLUSTRATIONS GAME OF THRONES (GAME) NARRATIVE ARCHIT (Open link)

  16. What's in a Good Error Message?

    In a way, an error message tells a story; and as with every good story, you need to establish some context about its general settings. For an error message, this should tell the recipient what the code in question was tr (Open link)

  17. Convey

    2022 February 01 16:21 stuartscott 1473754¤ 1240149¤ You may have noticed that the January edition of the Convey Digest looks a little different from the previous ones - the color scheme is now based on the dominant (Open link)

  18. Welcome - Rambling Readers

    Search Scan Barcode Username: Password: Forgot your password? Log in Rambling Readers Read | Review | Discover DECENTRALIZED FRIENDLY ANTI-CORPORATE Rambling Readers is a friendly community of book lovers. You can tr (Open link)

  19. Overheard at QCon 2022: Navigate complex environment and evolving relationships | by McKinsey Digital | McKinsey Digital Insights | Jan, 2023 | Medium

    We recently had the pleasure of participating in QCon, a global conference that gathers the best engineers from top-notch innovation companies. The event covers a wide range of relevant software… (Open link)

  20. Effective Go

    Table of ContentsIntroductionExamplesFormattingCommentaryNamesPackage namesGettersInterface namesMixedCapsSemicolonsControl structuresIfRedeclaration and reassignmentForSwitchType switchFunctionsMultiple return valuesNam (Open link)

  21. https://rust-book.cs.brown.edu/

    Welcome to the Rust Book experiment, and thank you for your participation! First, we want to introduce you to the new mechanics of this experiment. The main mechanic is quizzes: each page has a few quizzes about the pag (Open link)

  22. https://programmerweekly.us2.list-manage.com/track/click?u=72f68dcee17c92724bc7822fb&id=c6a9958764&e=d7c3968f32

    Ever since I started to work on the Apache APISIX project, I’ve been trying to improve my knowledge and understanding of REST RESTful HTTP APIs. For this, I’m reading and watching the following sources: Books. At the mom (Open link)

  23. What's in a Good Error Message? - Gunnar Morling

    In a way, an error message tells a story; and as with every good story, you need to establish some context about its general settings. For an error message, this should tell the recipient what the code in question was tr (Open link)

  24. Shields Down

    Resignations happen in a moment, and it’s not when you declare, “I’m resigning.” The moment happened a long time ago when you received a random email from a good friend who asked, “I know you’re really happy with your cu (Open link)

  25. Let's talk SkipList

    BackgroundSkipLists often come up when discussing “obscure” data-structures but in reality they are not that obscure, in fact many of the production grade softwares actively use them. In this post I’ll try to go into Ski (Open link)

  26. Not your grandfather’s logs — A Java library’s new approach to observability | by Roni Dover | Apr, 2023 | Better Programming

    A while back, I wrote about the fact that logs need an overhaul, and that practices that were relevant when logs were still text messages in files may no longer be relevant in an age when logs traces… (Open link)

  27. Everlog

    Being a creature of habit, I don’t tend to change up my tech routine very often. Once I find a workflow that clicks for me, I usually stick with it. Why fix what isn’t broken? But lately, for one reason or another, I’ve (Open link)

  28. User space

    For the term "user space" as used in Wikipedia, see Wikipedia:User pages. "Kernel space" redirects here. For the mathematical definition, see Null space. This article needs additional citations for verification. Please h (Open link)

  29. Top 10 Architecture Characteristics / Non-Functional Requirements with Cheatsheet | by Love Sharma | Jun, 2022 | Dev Genius

    Imagine you are buying a car. What essential features do you need in it? A vehicle should deliver a person from point A to point B. But what we also check in it is Safety, Comfort, Maintainability… (Open link)

  30. Bicycle

    There is something delightful about riding a bicycle. Once mastered, the simple action of pedaling to move forward and turning the handlebars to steer makes bike riding an effortless activity. In the demonstration below, (Open link)

  31. The Go Memory Model

    Table of ContentsIntroductionAdviceInformal OverviewMemory ModelImplementation Restrictions for Programs Containing Data RacesSynchronizationInitializationGoroutine creationGoroutine destructionChannel communicationLocks (Open link)

  32. A Better Way to Manage Projects

    The GOVNO framework is a novel approach to project management that aims to improve upon the shortcomings of the popular scrum methodology. Each letter of the acronym represents a key aspect of the framework: G: Governan (Open link)

  33. Maintaining a medium-sized Java library in 2022 and beyond

    scc --exclude-dir docs/book ─────────────────────────────────────────────────────────────────────────────── Language Files Lines Blanks Comments Code Complexity ──────────────────────────────── (Open link)